package com.dzl.admin.service;

import com.dzl.admin.pojo.SysRole;
import com.dzl.admin.pojo.dto.SaveOrUpdateRoleDto;
import com.dzl.admin.pojo.query.SysRoleQuery;
import com.dzl.admin.pojo.vo.RoleComboBoxVo;
import com.dzl.admin.pojo.vo.RoleEditorVo;
import com.dzl.admin.pojo.vo.SysMenuVo;
import com.dzl.admin.pojo.vo.SysRoleVo;
import com.dzl.base.service.BaseService;
import com.github.pagehelper.PageInfo;

import java.util.List;

/**
 * 角色表(SysRole)表服务接口
 *
 * @author caobucao
 * @since 2021-05-13 15:49:56
 */
public interface SysRoleService extends BaseService<SysRole> {

    /**
     * 分页查询角色权限管理列表
     * @date 2021/5/14 10:25
     * @author caobucao
     * @param query
     * @return java.util.List<com.dzl.role.entity.vo.SysRoleVo>
     */
    PageInfo<SysRoleVo> selectRoleListPage(SysRoleQuery query);

    /**
     * 逻辑删除角色
     * @date 2021/6/9 16:28
     * @author caobucao
     * @param sysRole  角色对象
     * @return java.lang.Integer
     */
    Integer deleteRole(SysRole sysRole);

    /**
     * 描述:添加角色
     * @date 2021/5/12 9:25
     * @author wangchao
     * @Param [param] 添加角色信息对象
     * @return java.lang.Integer
     **/
    Integer saveRole(SaveOrUpdateRoleDto param);

    /**
     * 描述:查询编辑回显角色详情信息
     * @date 2021/5/12 9:28
     * @author wangchao
     * @Param [id] 角色ID
     * @return com.dzl.role.pojo.vo.RoleEditorVo 角色编辑回显内容对象
     **/
    RoleEditorVo queryRoleById(Integer id);

    /**
     * 描述:根据角色ID查询菜单树
     * @date 2021/5/12 16:11
     * @author wangchao
     * @param roleId 角色ID
     * @param isEnable:传null表示查所有菜单，传1表示当该企业是同步数据配置的企业，需要隐藏一些分类，用此字段隐藏
     * @return java.util.List<com.dzl.menu.pojo.vo.MenuVo>  菜单树返回Vo对象
     **/
    List<SysMenuVo> queryByRoleIdMenuTree(Integer roleId, Integer isEnable);

    /**
     * 描述： 获取角色下拉框
     * @date 2021/5/13 9:00
     * @author wangchao
     * @Param enterpriseId 企业id
     * @return java.util.List<com.dzl.role.pojo.vo.RoleComboBoxVo> 角色权限下拉框返回值对象
     **/
    List<RoleComboBoxVo> queryRoleComboBox(Integer enterpriseId);
}
